/**
 * 根据省市区编码数组，从行政区划数据中提取对应名称
 * @param {Array} areaCodes - 省市区编码数组，格式为 [省级编码, 市级编码, 区级编码]（如 ["13","1302","130203"]）
 * @param {Array} fullAreaData - 完整行政区划数据（包含所有省份的数组，每个省份结构参考示例）
 * @returns {Object} - 包含省市区名称的对象，格式为 { province: 省份名, city: 城市名, district: 区县名 }，未找到则为 null
 */
export function getAreaNamesByCodes(areaCodes, fullAreaData) {
    // 初始化返回结果，默认均为 null
    const result = {
        province: null,
        city: null,
        district: null
    };

    // 校验输入：编码数组必须是3个元素的数组，行政区划数据必须是数组
    if (!Array.isArray(areaCodes) || areaCodes.length !== 3) {
        console.warn("省市区编码数组格式错误，需为 [省级编码, 市级编码, 区级编码]");
        return result;
    }
    if (!Array.isArray(fullAreaData)) {
        console.warn("完整行政区划数据必须是数组");
        return result;
    }

    const [provinceCode, cityCode, districtCode] = areaCodes;

    // 1. 查找省份
    const targetProvince = fullAreaData.find(province => province.code === provinceCode);
    if (targetProvince) {
        result.province = targetProvince.name;

        // 2. 查找城市（需确保省份有 children 数组）
        if (Array.isArray(targetProvince.children)) {
            const targetCity = targetProvince.children.find(city => city.code === cityCode);
            if (targetCity) {
                result.city = targetCity.name;

                // 3. 查找区县（需确保城市有 children 数组）
                if (Array.isArray(targetCity.children)) {
                    const targetDistrict = targetCity.children.find(district => district.code === districtCode);
                    if (targetDistrict) {
                        result.district = targetDistrict.name;
                    } else {
                        console.warn(`未找到编码为 ${districtCode} 的区县`);
                    }
                } else {
                    console.warn(`省份 ${targetProvince.name} 无市级数据`);
                }
            } else {
                console.warn(`未找到编码为 ${cityCode} 的城市`);
            }
        } else {
            console.warn(`编码为 ${provinceCode} 的省份无市级数据`);
        }
    } else {
        console.warn(`未找到编码为 ${provinceCode} 的省份`);
    }

    return result;
}
